home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / usr (gcc 1.37 libs) / mac / lseek.c < prev    next >
C/C++ Source or Header  |  1993-12-08  |  808b  |  33 lines

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <fcntl.h>
  4. #include "crtlocal.h"
  5.  
  6. off_t lseek(int fd, off_t off, int nMode)
  7.     {
  8.     ParamBlockRec   pbr;
  9.     if (crt_fd_tab[fd].flags & O_PIPE)
  10.         {
  11.         return 0;
  12.         }
  13.     if (nMode == SEEK_SET)
  14.         nMode = fsFromStart;
  15.     else if (nMode == SEEK_CUR)
  16.         nMode = fsFromMark;
  17.     else if (nMode == SEEK_END)
  18.         nMode = fsFromLEOF;
  19.     pbr.ioParam.ioRefNum = crt_fd_tab[fd].fd;
  20.     pbr.ioParam.ioPosMode = nMode;
  21.     pbr.ioParam.ioPosOffset = off;
  22.     PBSetFPosSync(&pbr);
  23.     if ((eofErr == pbr.ioParam.ioResult) && (nMode == fsFromStart))
  24.         {
  25.         pbr.ioParam.ioMisc = (Ptr)off;
  26.         PBSetEOFSync(&pbr);
  27.         pbr.ioParam.ioPosMode = nMode;
  28.         pbr.ioParam.ioPosOffset = off;
  29.         PBSetFPosSync(&pbr);
  30.         }
  31.     return pbr.ioParam.ioPosOffset;
  32.     }    
  33.